import { createRouter, createWebHistory } from 'vue-router';
import LoginView from '../components/loginView.vue';
import EnrollView from '../components/enrollView.vue';
import UserView from '@/views/UserView.vue';
import TaskView from '@/views/TaskView.vue';
import DeviceView from '@/views/DeviceView.vue';
import InspectionRecordView from '@/views/InspectionRecordView.vue';
import homeView from '@/views/homeView.vue';

const routes = [
    // 独立路由：登录/注册（无布局）
    {
        path: '/login',
        name: 'Login',
        component: LoginView
    },
    {
        path: '/enroll',
        name: 'Enroll',
        component: EnrollView
    },
// 根路径重定向
    {
        path: '/',
        redirect: '/login'
    },
    // 首页布局路由（包含侧边栏 + 内容区）
    {
        path: '/home',
        component: homeView, // 首页布局组件（包含侧边栏和 <router-view>）
        meta: { requiresAuth: true }, // 需要登录的标记
        children: [
            // 子路由：渲染在 homeView 的 <router-view> 中（内容区）
            {
                path: 'users',
                name: 'Users',
                component: UserView
            },
            {
                path: 'devices',
                name: 'Devices',
                component: DeviceView
            },
            {
                path: 'tasks',
                name: 'Tasks',
                component: TaskView
            },
            {
                path: 'inspection-record',
                name: 'InspectionRecord',
                component: InspectionRecordView
            },
            // 默认重定向（进入 /home 时自动跳转到子路由）
            {
                path: '',
                redirect: { name: 'Users' } // 根据需求修改默认路由
            }
        ]
    },
    // 404 处理
    // {
    //     path: '/:pathMatch(.*)*',
    //     redirect: '/login'
    // }
];

const router = createRouter({
    history: createWebHistory(),
    routes
});

// 优化后的路由守卫
router.beforeEach((to, from, next) => {
    const userInfo = localStorage.getItem('userInfo');

    // 访问登录/注册页的特殊处理
    // if (to.name === 'Login' || to.name === 'Enroll') {
    //     userInfo ? next({ name: 'Users' }) : next(); // 已登录用户禁止返回登录页
    //     return;
    // }

    // 需要认证的路由处理
    if (to.matched.some(record => record.meta.requiresAuth)) {
        userInfo ? next() : next({ name: 'Login' });
    } else {
        next();
    }
});

export default router;